iT邦幫忙

2022 iThome 鐵人賽

DAY 12
0
Modern Web

資工琪琪的後端學習筆記(python&flask)系列 第 12

Day 12 Flask 請求物件基礎 HTTP Request

  • 分享至 

  • xImage
  •  
tags: Flask Python 澎澎入門學習

請求(HTTP Request)

請求(HTTP Request)

前端透過網址連線到後端的正式稱呼

  • 前端的立場:
    主動發出請求給後端伺服器,並且附帶上相關資訊
  • 後端的立場:
    被動從前端接收請求,並且取得其中附帶的相關資訊

接收請求

後端如何接收請求?

  • Flask 接收請求的流程
    • 前端發送請求
    • Flask 套件協助我們處理網路連線底層:負責接收請求、並且將相關資訊封裝在request物件之中
    • 根據路由,決定要怎麼處理請求

如何使用Flask 提供的 Request 物件

Request 物件 : 透過這個物件,取得請求相關資訊

  • 使用方式
    • 載入 request 物件
    • 在路由對應的函式中直接使用 request 取得物件
    • 進一步取得相關資訊

Request 基本資訊

取得當前請求的各種基礎資訊

  • 使用 request 物件的各種屬性
    • method 請求方法 : Get、Post、...
    • scheme 通訊協定
    • host 主機名稱
    • path 路徑
    • url 完整網址

Request Headers

取得當前請求的標頭
標頭就像是附加資訊,即使沒有附加資訊連線依然會成功。有了附加資訊使用的方式就會更廣更加靈活

  • 使用 request 物件的 headers 屬性。常見標頭如下:
    • user-agent : 紀錄使用者所使用的作業系統、瀏覽器的相關資訊
    • accept-language : 使用者的語言偏好
    • referrer : 紀錄使用者引薦進來的網頁的網址(記錄從哪個網頁進來的)

實際練習:請求物件的觀察使用

看到網頁再轉圈圈其實就是在發出request

觀察 request的基本資訊

  1. 首先我們要先載入請求物件from flask import request

  2. 創修改一個路徑

    格式有點跑掉

    
        from flask import Flask #載入 Flask
        from flask import request #載入 Request 物件
        #在建立Application物件,可以設定靜態檔案的路徑處理
        app=Flask(
            __name__,
            static_folder="public",   #靜態檔案的「資料夾」名稱
            static_url_path="/"  #靜態檔案的對應網址「路徑」
        ) 
        # 所有在static 資料夾底下的檔案,都對應到網址路徑 /abc/檔案名稱
    
    
        #建立路徑 / 對應的處理方式
    
        #路由設定
        @app.route("/") #'/'叫正斜線反之'\'叫反斜線
        def index():#用來回應路徑 / 的處理函式
            print("請求方法:", request.method)   #(物件.屬性)
            print("通訊協定 :", request.scheme)   
            print("主機名稱 :", request.host)
            print("路徑 :",request.path)
            print("完整的網址 :",request.url)
            #其實上面這些在網址就看得到了
            return "Hello Flask"    # 回傳路徑 / 的內容
    
        #建立路徑 /data對應的處理函式
        @app.route("/data")
        def handData():
            return "My Data"
         #動態路由:建立 /usr/使用者名稱 的處理函式
    
        @app.route("/user/<username>")
        def handleUser(username):
            return "Hello "+username
    
        @app.route("/player/<name>")
        def User(name):
            if name=="琪琪":
                return "嗨! "+name
            else:
                return "我是BOT"
    
        app.run(port=3000) #啟動伺服器
    
  3. 運行Server,只要我們每載入一次網頁Server就會更新一次(顯示 method、scheme ...等等)

header 標頭觀察

  1. 我們一樣是設定路由函式,把上面的註解掉增加

        print("瀏覽器何作業系統 :", request.headers.get("user-agent")) 
        print("語言偏好 :", request.headers.get("accept-language"))
        print("引薦網址", request.headers.get("referrer"))
    

  2. 執行server當我們連線到網頁時,在VScode下的終端會print以下文字

參考文章與資料來源

澎澎的教學網站
澎澎的yt教學頻道


上一篇
Day 11 Flask 後端靜態檔案處理 Static Files
下一篇
Day 13 Flask 要求字串處理 Query String
系列文
資工琪琪的後端學習筆記(python&flask)30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言